home *** CD-ROM | disk | FTP | other *** search
/ Just Call Me Internet / Just Call Me Internet.iso / prog / atari / m2 / cat3src / magic / d / mtappl.d < prev    next >
Text File  |  1997-10-26  |  9KB  |  204 lines

  1. (*----------------------------------------------------------------------*
  2.  *                                                                      *
  3.  *  MAGICTOOLS   Modula's  All purpose  GEM  Interface  Cadre  Toolbox  *
  4.  *               ÿ         ÿ            ÿ    ÿ          ÿ               *
  5.  *----------------------------------------------------------------------*
  6.  * Version 3.30  02.02.1992     (C)90/91/92 by Peter Hellinger Software *
  7.  *----------------------------------------------------------------------*
  8.  *            Dieses Modul ist urheberrechtlich geschtzt.              *
  9.  *                                                                      *
  10.  * Die Ver”ffentlichung des Quelltextes oder Teilen daraus, sowie die   *
  11.  * Verbreitung des bersetzten, nicht gelinkten Codes in schriftlicher, *
  12.  * oder maschinenlesbarer Form, insbesondere in Zeitschriften, Mail-    *
  13.  * boxen oder anderen Medien bedarf der ausdrcklichen schriftlichen    *
  14.  * Einverst„ndnisserkl„rung des Autors.                                 *
  15.  *                                                                      *
  16.  * Die Verbreitung des Moduls als Teil eines gelinkten Programms ist    *
  17.  * fr Lizenznehmer ausdrcklich erlaubt!  Der Autor beh„lt sich das    *
  18.  * Recht vor, diese Erlaubnis jederzeit und ohne Angaben von Grnden zu *
  19.  * widerrufen.                                                          *
  20.  *----------------------------------------------------------------------*)
  21.  
  22. (*----------------------------------------------------------------------*
  23.  * mtAppl       Basisfunktionen einer Applikation                       *
  24.  *----------------------------------------------------------------------*)
  25.  
  26. DEFINITION MODULE mtAppl;
  27.  
  28. FROM MagicSys   IMPORT  Nil, Null, Bit0, Bit1, Bit2, Bit3, Bit4, Bit5, Bit6,
  29.                         Bit7, Bit8, Bit9, Bit10, Bit11, Bit12, Bit13, Bit14,
  30.                         Bit15, LOC, Byte, ByteSet, sWORD, sINTEGER, sCARDINAL,
  31.                         sBITSET, lINTEGER, lCARDINAL, lWORD, lBITSET;
  32.  
  33.  
  34.  
  35.  
  36.  
  37. IMPORT SYSTEM;
  38.  
  39. (*----------------------------------------------------------------------*
  40.  *          Auf die folgenden Variablen NUR LESEND ZUGREIFEN!!!         *
  41.  *----------------------------------------------------------------------*)
  42.  
  43. VAR     ApplIdent:      sINTEGER; (* Application-ID des Programms       *)
  44.         VDIHandle:      sINTEGER; (* Handle der ge”ffneten Workstation  *)
  45.         MaxWidth:       sINTEGER; (* Maximale Anzahl Pixel waagerecht   *)
  46.         MaxHeight:      sINTEGER; (* Maximale Anzahl Pixel senkrecht    *)
  47.         MaxColors:      sINTEGER; (* Maximale Anzahl Farben             *)
  48.         Bitplanes:      sINTEGER; (* Anzahl der Bitplanes               *)
  49.         CharWidth:      sINTEGER; (* Werte von MagicAES.GrafHandle      *)
  50.         CharHeight:     sINTEGER; (* -"- *)
  51.         BoxWidth:       sINTEGER; (* -"- *)
  52.         BoxHeight:      sINTEGER; (* -"- *)
  53.         DeskX:          sINTEGER; (* X-Position des Desktop-Fensters    *)
  54.         DeskY:          sINTEGER; (* Y-Position des Desktop-Fensters    *)
  55.         AESFontid:      sINTEGER; (* Font-ID des AES-Fonts              *)
  56.         AESFontsize:    sINTEGER; (* H”he des AES-Fonts                 *)
  57.  
  58. VAR     KaosTos:        BOOLEAN;   (* Diese Variable zeigt an, ob es
  59.                                     * sich bei der vorliegenden TOS-Version
  60.                                     * um ein KAOS (A. Kromke TOS) handelt.
  61.                                     *)
  62.  
  63. VAR     PrivateWS:      sINTEGER;
  64.         (* Fr die Module mtDials, mtMenus und mtPopups: Hier handelt
  65.          * es sich um eine private Workstation, die nur von diesen Modulen
  66.          * benutzt werden sollte. Fr allgemeine Anwendungen sollte die
  67.          * Workstation VDIHandle (siehe oben) benutzt werden. Fr merkwrdige
  68.          * Effekte bei Benutzung von PrivateWS keine Gew„hr!!!
  69.          *
  70.          * Die Workstation wird defaultm„žig so eingestellt:
  71.          *
  72.          * Fllfarbe = weiž; Kein Rand beim Fllen zeichnen; Zeichen-
  73.          * alignment = Oberkante Zeichenzelle
  74.          *)
  75.  
  76.  
  77. PROCEDURE ApplInit;
  78. (* Meldet die Applikation beim AES an, ”ffnet VDI-Workstation mit Handle
  79.  * VDIHandle (siehe oben).  Wird im Modulk”rper ausgefhrt und braucht
  80.  * nicht weiter beachtet zu werden!
  81.  *)
  82.  
  83. PROCEDURE InstallTermproc (proc: PROC);
  84. (* Installiert eine Prozedur, welche bei Aufruf von ApplTerm automatisch
  85.  * abgearbeitet wird.  So k”nnen Systemresourcen auf einfache Art frei-
  86.  * gegeben werden.
  87.  *)
  88.  
  89. PROCEDURE ApplDeinstall;
  90. (* Ruft die installierten Termprocs auf
  91.  *)
  92.  
  93. PROCEDURE ApplTerm (return: sINTEGER);
  94. (* gibt alle benutzten Workstations frei und meldet die Applikation beim
  95.  * AES wieder ab.  Gibt den Wert return an das aufrufende Programm zurck.
  96.  *)
  97.  
  98. PROCEDURE ApplPath (VAR path: ARRAY OF CHAR);
  99. (* liefert den Pfad, von dem das Programm gestartet wurde *)
  100.  
  101. PROCEDURE ApplName (VAR name: ARRAY OF CHAR);
  102. (* liefert den Namen, unter dem das Programm gestartet wurde. Dazu muž
  103.  * allerdings das Programm mittels shel_write gestartet worden sein.
  104.  * Der Atari-Desktop tut dies immer, Gemini setzt zumindest die Parameter
  105.  * richtig.
  106.  *)
  107.  
  108. TYPE Device = (Screen, Plotter, Printer, Metafile, Camera, Tablett);
  109.  
  110. PROCEDURE OpenWorkstation (device: Device; w, h: sINTEGER; rc: BOOLEAN): sINTEGER;
  111. (* ™ffnet eine Workstation, mit allem Pipapo, returniert Handle.
  112.  * Jede ber diese Funktion ge”ffnete Workstation muž mit CloseWorkstation
  113.  * wieder geschlossen werden.  Ein Aufruf von ApplTerm erledigt dies auch
  114.  * sehr elegant.
  115.  *
  116.  * Bei device = Screen wird eine virtuelle Workstation ge”ffnet, alle
  117.  * anderen ”ffnen eine physikalische Workstation auf dem jeweiligen Ger„t.
  118.  * Dazu muž natrlich ein GDOS geladen sowie der entsprechende Treiber und
  119.  * die dazugeh”rigen Fonts im ASSIGN.SYS angegeben sein. Der Treiber muž
  120.  * auch fr das GDOS ladbar sein, sonst gibts blož Murks...
  121.  * Bitte unbedingt den Returnwert auf > 0 vergleichen, sonst gibts bei
  122.  * der Ausgabe Crash!
  123.  *
  124.  * Die Parameter w und h spielen nur eine Rolle, wenn ein Matrixdrucker
  125.  * angesprochen werden soll. Hier kann die maximale Breite und H”he in
  126.  * Pixel angegeben werden.
  127.  *
  128.  * Wenn rc = TRUE werden Rasterkoordinaten verwendet, ansonsten werden
  129.  * NDC-Koordinaten benutzt.
  130.  *
  131.  * Alle hier ge”ffneten Workstations werden beim Aufruf von ApplTerm wieder
  132.  * geschlossen
  133.  *)
  134.  
  135. PROCEDURE CloseWorkstation (handle: sINTEGER);
  136. (* Schliežt eine Workstation *)
  137.  
  138. PROCEDURE VqGdos (): lCARDINAL;
  139. (* Retuniert den GDOS-Wert (siehe MagicVDI). Prft auch, ob es sich um ein
  140.  * ABC-GEM handelt. In diesem Falle retuniert die Prozedur LONG (21) fr
  141.  * GEM 2.1
  142.  *)
  143.  
  144. (*----------------------------------------------------------------------*
  145.  * Maus-Handling: GEM hat im allgemeinen etwas Probleme mit der Maus.   *
  146.  *                Deshalb ist es sinnvoll, die Maus zentral ber ein    *
  147.  *                Modul zu steuern.                                     *
  148.  *----------------------------------------------------------------------*)
  149.  
  150. PROCEDURE MouseOn;
  151. PROCEDURE MouseArrow;
  152. PROCEDURE MouseCursor;
  153. PROCEDURE MouseBusy;
  154. PROCEDURE MouseFinger;
  155. PROCEDURE MouseHand;
  156. PROCEDURE MouseThincross;
  157. PROCEDURE MouseThickcross;
  158. PROCEDURE MouseOutline;
  159. PROCEDURE MouseUser;
  160. (* Diese Routinen schalten die Maus mit dem jeweilige Bild EIN *)
  161.  
  162. PROCEDURE MouseOff;
  163. (* Schaltet die Maus AUS *)
  164.  
  165. PROCEDURE UserMouse (VAR form: ARRAY OF LOC);
  166. (* Setzt eine User-Definierte Maus. Sichtbar erst mit MouseUser! *)
  167.  
  168. PROCEDURE MouseState (VAR form: sINTEGER; VAR sichtbar: BOOLEAN);
  169. (* Liefert den Modulinternen Status der Maus. Dieser Status muž nicht der
  170.  * Wirklichkeit entsprechen, da andere Applikationen (ACC oder unter
  171.  * MultiGEM) die Maus ver„ndert haben k”nnten. Leider gibt es seitens des
  172.  * GEM keine M”glichkeit festzustellen, welche Mausform aktiv ist, bzw.
  173.  * ob die Maus auch sichtbar ist.
  174.  *)
  175.  
  176. PROCEDURE StoreMouse;
  177. (* Merkt sich die augenblickliche Mausform und Sichtbarkeit. Die Maus
  178.  * kann nun ver„ndert werden, eingeschaltet, ausgeschaltet wie auch immer.
  179.  * Mit RestoreMouse wird die gemerkte Maus wieder hergestellt. Das gilt
  180.  * auch fr eine Userdef-Maus! Die Prozedur ist bis zu einer Tiefe von
  181.  * 64 schachtelbar. Die MagicLib- und MagicTools-Module benutzen dies, 
  182.  * wenn sie (die Module) eine bestimmte Mausform haben wollen. So merkt 
  183.  * sich z.B. der Fontselector aus mtFonts, wie die Maus vorher war und 
  184.  * restauriert sie wieder; ebenso verfahren die mtAlerts. 
  185.  *)
  186.  
  187. PROCEDURE RestoreMouse;
  188. (* Restauriert eine mit StoreMouse gemerkte Mausform und Sichtbarkeit. *)
  189.  
  190. PROCEDURE SetMouse (x, y: sCARDINAL);
  191. (* Ein Schmankerl, und dazu noch ganz legal: Mausposition festlegen!*)
  192.  
  193. PROCEDURE InitMtAppl;
  194. (* Initialisiert das Modul. Wird normalerweise im Modulk”rper ausgefhrt
  195.  * und braucht somit nicht weiter beachtet werden.
  196.  *)
  197.  
  198. PROCEDURE Intern (i: sINTEGER): SYSTEM.ADDRESS;
  199. (* Interne Prozedur, nicht verwenden! *)
  200.  
  201.  
  202. END mtAppl.
  203.  
  204.